package org.yong.springbootcmd.util;

import com.google.common.collect.Lists;

import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.util.List;

/** 反射工具 */
public abstract class ReflectUtil {

  /**
   * 获取指定注解的字段
   *
   * @param obj 目标对象
   * @param aCls 注解类型
   * @return 被<i>aCls</i>注解的字段
   */
  public static List<Field> getFieldsByAnnotation(Object obj, Class<? extends Annotation> aCls) {
    Class<?> aClass = obj.getClass();
    List<Field> ret = Lists.newArrayList();
    Field[] fields = aClass.getDeclaredFields();
    for (Field field : fields) if (field.isAnnotationPresent(aCls)) ret.add(field);
    return ret;
  }
}
